package org.wtframework.website.server.service;


import java.util.List;

import org.openredhead.springx.core.server.page.IPage;
import org.openredhead.springx.core.web.mvc.ajaxrpc.BasicAjaxRpcRemoteService;
import org.openredhead.springx.core.web.mvc.annotation.AjaxRpcMethod;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.wtframework.website.server.manager.FriendLinkManager;
import org.wtframework.website.server.model.impl.FriendLink;

/**
 * 
 * <B>版权所有：</B> 佛山市网特计算机软件有限公司 <br/><br/>
 * <B>类描述：</B> （友情链接Service） <br/><br/>
 * <B>作者：</B> 何展操 <br/><br/>
 * <B>创建日期：</B> 2014年7月3日 下午4:58:50 
 *
 */
@Service
public class FriendLinkService extends BasicAjaxRpcRemoteService {
	
	@Autowired
	private FriendLinkManager friendLinkManager;
	
	//后台列表页
	public IPage<FriendLink> findAllFriendLink(Integer pageNo, Integer pageSize){
		String hql="from FriendLink order by orderId desc";
		return friendLinkManager.findByQuery(hql).getPageByPageNo(pageNo, pageSize);
	}
	
	public List<FriendLink> findAllByOrderId(){
		String hql="from FriendLink order by orderId desc";
		return friendLinkManager.findByQuery(hql).getList();
	}
	
	@AjaxRpcMethod
	public FriendLink findFriendById(Integer friendId){
		return friendLinkManager.load(friendId);
	}
	
	/**
	 * 
	 * <B>方法描述：</B>（添加友情链接） <br/>
	 *
	 * <B>作者：	 </B> 何展操 <br/>
	 * <B>创建日期：</B> 2014年7月16日 上午9:29:35 
	 * @param friend
	 */
	@AjaxRpcMethod
	public void addFriendLink(FriendLink friend){
		
		try {
			friendLinkManager.save(friend);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 
	 * <B>方法描述：</B>（修改友情链接） <br/>
	 *
	 * <B>作者：	 </B> 何展操 <br/>
	 * <B>创建日期：</B> 2014年7月16日 上午9:32:22 
	 * @param friend
	 */
	@AjaxRpcMethod
	public void updateFriendLink(FriendLink friend){
		FriendLink temp=friendLinkManager.load(friend.getId());
		temp.setTitle(friend.getTitle());
		temp.setLinkUrl(friend.getLinkUrl());
		friendLinkManager.save(temp);
	}
	
	@AjaxRpcMethod
	public void delFriendLink(List<Integer> idList){
		if(idList.size()<=0){
			return;
		}
		friendLinkManager.delete(idList);
	}
	
	public IPage<FriendLink> findFriendByName(Integer pageNo, Integer pageSize, String name){
		String hql="from FriendLink where title like ? order by orderId desc";
		return friendLinkManager.findByQuery(hql, new Object[]{"%"+name+"%"}).getPageByPageNo(pageNo, pageSize);
	}
	
	public void updateFriendLinkOrderId(String hql){
		friendLinkManager.getQuery(hql).executeUpdate();
	}
	
	@AjaxRpcMethod
	public void friendLinkMoveUpAndDown(Integer friendLinkId, Integer friendOrderId, String flag){
		List<FriendLink> friendLinkList=findAllByOrderId();
		System.out.println(friendLinkList);
		int friendIndex=0;
		Integer tempOrderId=friendOrderId;
		Integer tempId=friendLinkId;
		System.out.println(tempOrderId);
		System.out.println(tempId);
		for(int i=0;i<friendLinkList.size();i++){
			friendIndex=i;
			if(friendLinkList.get(i).getOrderId()==friendOrderId){
				break;
			}
			//System.out.println(friendIndex);
		}
		if("up".equals(flag)){
			System.out.println(friendIndex);
			if(friendIndex-1>=0){
				friendIndex=friendIndex-1;
				tempId=friendLinkList.get(friendIndex).getId();
				tempOrderId=friendLinkList.get(friendIndex).getOrderId();
				if(tempId!=friendLinkId && tempOrderId!=friendOrderId){
					String hql="update FriendLink set orderId="+tempOrderId+" where id="+friendLinkId;
					updateFriendLinkOrderId(hql);
					String hql2="update FriendLink set orderId="+friendOrderId+" where id="+tempId;
					updateFriendLinkOrderId(hql2);
				}
			}
		}else{
			if(friendIndex+1<=friendLinkList.size()-1){
				friendIndex=friendIndex+1;
				tempId=friendLinkList.get(friendIndex).getId();
				tempOrderId=friendLinkList.get(friendIndex).getOrderId();
				if(tempId!=friendLinkId && tempOrderId!=friendOrderId){
					String hql="update FriendLink set orderId="+tempOrderId+" where id="+friendLinkId;
					updateFriendLinkOrderId(hql);
					String hql2="update FriendLink set orderId="+friendOrderId+" where id="+tempId;
					updateFriendLinkOrderId(hql2);
				}
			}
			
		}
		//		try {
//			List<FriendLink> friendLinkList=findAllByOrderId();
//			System.out.println(friendLinkList);
//			int friendIndex=0;
//			Integer tempOrderId=friendOrderId;
//			Integer tempId=friendLinkId;
//			for(int i=0;i<friendLinkList.size();i++){
//				friendIndex=i;
//				if(friendLinkList.get(i).getOrderId()==friendOrderId){
//					break;
//				}
//			}
//			System.out.println(flag);
//			if("up".equals(flag)){
//				System.out.println(friendIndex);
//				if(friendIndex-1>=0){
//					friendIndex=friendIndex-1;
//					tempId=friendLinkList.get(friendIndex).getId();
//					tempOrderId=friendLinkList.get(friendIndex).getOrderId();
//					System.out.println(tempId);
//					System.out.println(tempOrderId);
//					if(tempId!=friendLinkId && tempOrderId!=friendOrderId){
//						String hql="update FriendLink set orderId="+tempOrderId+" where id="+friendLinkId;
//						updateFriendLinkOrderId(hql);
//						String hql2="update FriendLink set orderId="+friendOrderId+" where id="+tempId;
//						updateFriendLinkOrderId(hql2);
//					}
//				}
//				System.out.println("11111111111111111111111111111111");
//			}else{
//				if(friendIndex+1<=friendLinkList.size()-1){
//					friendIndex=friendIndex+1;
//					tempId=friendLinkList.get(friendIndex).getId();
//					tempOrderId=friendLinkList.get(friendIndex).getOrderId();
//					if(tempId!=friendLinkId && tempOrderId!=friendOrderId){
//						String hql="update FriendLink set orderId="+tempOrderId+" where id="+friendLinkId;
//						updateFriendLinkOrderId(hql);
//						String hql2="update FriendLink set orderId="+friendOrderId+" where id="+tempId;
//						updateFriendLinkOrderId(hql2);
//					}
//				}
//				
//			}
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		
		
	}
	
}
